﻿using System;
using System.Reflection;
using Bit.Core.Resources;
using Microsoft.Extensions.Localization;

namespace Bit.Core.Services
{
    public class I18nService : II18nService
    {
        private readonly IStringLocalizer _localizer;

        public I18nService(IStringLocalizerFactory factory)
        {
            var assemblyName = new AssemblyName(typeof(SharedResources).GetTypeInfo().Assembly.FullName);
            _localizer = factory.Create("SharedResources", assemblyName.Name);
        }

        public LocalizedString GetLocalizedHtmlString(string key)
        {
            return _localizer[key];
        }

        public LocalizedString GetLocalizedHtmlString(string key, params object[] args)
        {
            return _localizer[key, args];
        }

        public string Translate(string key, params object[] args)
        {
            return string.Format(GetLocalizedHtmlString(key).ToString(), args);
        }

        public string T(string key, params object[] args)
        {
            return Translate(key, args);
        }
    }
}
